<template>
  <el-dialog title="关联加工作业详情" :visible.sync="showDialog" top="0" :close-on-click-modal="false" width="85%" @close="cancel">
    <template v-if="selectedItem !== null">
      <el-divider content-position="left">
        <span>批次基本信息</span>
      </el-divider>
      <el-descriptions :column="2" border>
        <el-descriptions-item>
          <template slot="label">
            批次名称
          </template>
          {{ selectedItem.batchName }}
        </el-descriptions-item>
        <el-descriptions-item>
          <template slot="label">
            批次号
          </template>
          {{ selectedItem.batchNo }}
        </el-descriptions-item>
        <el-descriptions-item>
          <template slot="label">
            加工产品
          </template>
          {{ selectedItem.productName }}
        </el-descriptions-item>
        <el-descriptions-item>
          <template slot="label">
            加工类型：
          </template>
          {{ selectedItem.batchType === 'SELF' ? '自主生产' : '委托加工' }}
        </el-descriptions-item>
      </el-descriptions>
      <template v-for="(item, index) in taskList">
        <el-divider :key="index" content-position="left">
          <span>工单 {{ index + 1 }}</span>
        </el-divider>
        <el-descriptions :key="index" :column="2" border>
          <el-descriptions-item>
            <template slot="label">
              加工作业名称
            </template>
            {{ item.taskName }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              加工作业状态
            </template>
            {{ statusMap.find(i => i.status === item.status).name }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              预期开始时间
            </template>
            {{ item.startTime | formateTime }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              预期结束时间
            </template>
            {{ item.endTime | formateTime }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              关联产线
            </template>
            {{ item.productLineName }}
          </el-descriptions-item>
          <el-descriptions-item v-if="item.status === 'PROGRESS'">
            <template slot="label">
              是否逾期
            </template>
            {{ item.overdue ? '是' : '否' }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              作业人
            </template>
            {{ item.processName }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              操作人
            </template>
            {{ item.operatorName }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              预估加工量
            </template>
            {{ item.processingVolume }} {{ item.product.unitName }}
          </el-descriptions-item>
          <el-descriptions-item v-if="item.status === 'PROGRESS'">
            <template slot="label">
              当前已加工量
            </template>
            {{ num }} {{ item.product.unitName }}
          </el-descriptions-item>
          <template v-if="['SUSPENDED', 'COMPLETED'].includes(item.status)">
            <el-descriptions-item>
              <template slot="label">
                实际加工量
              </template>
              {{ item.actualVolume }}
            </el-descriptions-item>
            <el-descriptions-item>
              <template slot="label">
                产品报废量
              </template>
              {{ item.scrapNum }}
            </el-descriptions-item>
            <el-descriptions-item>
              <template slot="label">
                实际开始时间
              </template>
              {{ item.actualStartTime | formateTime }}
            </el-descriptions-item>
          </template>
          <template v-if="item.status === 'COMPLETED'">
            <el-descriptions-item>
              <template slot="label">
                实际结束时间
              </template>
              {{ item.actualEndTime | formateTime }}
            </el-descriptions-item>
            <el-descriptions-item>
              <template slot="label">
                是否按期完成
              </template>
              {{ item.overdue ? '否' : '是' }}
            </el-descriptions-item>
          </template>
          <template v-if="item.status === 'SUSPENDED'">
            <el-descriptions-item>
              <template slot="label">
                实际中止时间
              </template>
              {{ item.suspendEndTime | formateTime }}
            </el-descriptions-item>
            <el-descriptions-item>
              <template slot="label">
                中止原因
              </template>
              {{ item.suspendReason }}
            </el-descriptions-item>
          </template>
        </el-descriptions>
      </template>
    </template>
    <div slot="footer" class="dialog-footer">
      <el-button class="cancelbtn" @click="cancel()">关 闭</el-button>
    </div>
  </el-dialog>
</template>
<script>
import apiTask from '@/api/processing-management/process-task-manage/index';
import moment from 'moment';
export default {
  components: {},
  filters: {
    formateTime: function(value) {
      return moment(value).format('YYYY-MM-DD HH:mm:ss');
    }
  },
  props: {
    value: Boolean,
    selectedItem: {
      type: Object,
      default: null
    }
  },
  data() {
    return {
      showDialog: false,
      taskList: [],
      statusMap: [
        { name: '全部', status: null },
        { name: '待开始', status: 'CREATE' },
        { name: '待领料', status: 'PICKING' },
        { name: '待作业', status: 'ASSIGNED' },
        { name: '作业中', status: 'PROGRESS' },
        { name: '已完成', status: 'COMPLETED' },
        { name: '已中止', status: 'SUSPENDED' }
      ]
    };
  },
  watch: {
    value(v) {
      this.showDialog = v;
      if (v) {
        this.init();
      }
    }
  },
  created() {
    this.reset();
  },
  mounted() {},
  methods: {
    reset() {
      this.taskList = [];
    },
    init() {
      this.getTaskList();
    },
    getTaskList() {
      return apiTask.getTaskList({ batchId: this.selectedItem.batchId }).then(res => {
        if (res.code === 1) {
          this.taskList = res.data;
        }
      });
    },
    close() {
      setTimeout(() => {
        this.reset();
        this.$refs['form'].resetFields();
      }, 250);
      this.$emit('input', false);
    },
    cancel() {
      setTimeout(() => {
        this.reset();
        this.$refs['form'].resetFields();
      }, 250);
      this.$emit('input', false);
    }
  }
};
</script>
<style lang="scss" scoped>
p {
  font-size: 16px;
  font-weight: bold;
}
::v-deep {
  .el-divider__text {
    background-color: #f0f3f7;
  }
}
::v-deep {
  .el-descriptions .is-bordered .el-descriptions-item__cell {
    border-color: #000;
    color: #000;
  }
  .el-descriptions-item__label {
    font-weight: bold !important;
  }
}
.other {
  display: flex;
  justify-content: space-between;
  .other-info {
    flex: 0 0 49%;
  }
}
.smallp {
  font-size: 14px;
}
</style>
